// 数字递增动画
function animateCounter() {
    // 选取所有带有 data-target 属性的元素
    document.querySelectorAll('[data-target]').forEach(element => {
        // 解析目标数值
        const target = parseInt(element.dataset.target);
        let current = 0;
        const duration = 2000; // 动画时长
        const startTime = Date.now();

        // 更新函数
        const update = () => {
            // 计算自开始以来经过的时间
            const elapsed = Date.now() - startTime;
            // 计算进度，确保不超过 1
            const progress = Math.min(elapsed / duration, 1);
            // 根据进度更新当前数值
            current = Math.floor(progress * target);
            // 更新元素的文本内容
            element.textContent = current.toLocaleString();
            
            // 如果动画未完成，请求下一帧
            if (progress < 1) requestAnimationFrame(update);
            // 动画完成时，确保数值准确达到目标
            else element.textContent = target.toLocaleString();
        }

        // 开始动画
        requestAnimationFrame(update);
    });
}
// 运行时间计算器
function initRuntime() {
    const startDate = new Date('2025-02-05');
    const element = document.getElementById('runtime');

    const update = () => {
        const now = new Date();
        const diff = now - startDate;
        
        const days = Math.floor(diff / 86400000);
        const hours = Math.floor((diff % 86400000) / 3600000)
            .toString().padStart(2, '0');
        const minutes = Math.floor((diff % 3600000) / 60000)
            .toString().padStart(2, '0');
        const seconds = Math.floor((diff % 60000) / 1000)
            .toString().padStart(2, '0');

        element.textContent = `${days} 天 ${hours}:${minutes}:${seconds}`;
        requestAnimationFrame(update);
    }

    update();
}

// 初始化
document.addEventListener('DOMContentLoaded', () => {
    animateCounter();
    initRuntime();
    
    // 卡片入场动画
    document.querySelectorAll('.card').forEach((card, index) => {
        card.style.animation = `slideIn 0.5s ease ${index * 0.1}s forwards`;
    });
});